from typing import Dict

from pydantic import BaseModel

from src.SpectralIndex import SpectralIndex


class SpectralIndices(BaseModel):
    SpectralIndices: Dict[str, SpectralIndex]


spindex = SpectralIndices(
    SpectralIndices=dict(
        BNDVI=SpectralIndex(
            short_name="BNDVI",
            long_name="Blue Normalized Difference Vegetation Index",
            formula="(N - B)/(N + B)",
            reference="https://doi.org/10.1016/S1672-6308(07)60027-4",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/MATRIX4284",
        ),
        CIG=SpectralIndex(
            short_name="CIG",
            long_name="Chlorophyll Index Green",
            formula="(N / G) - 1.0",
            reference="https://doi.org/10.1078/0176-1617-00887",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        CVI=SpectralIndex(
            short_name="CVI",
            long_name="Chlorophyll Vegetation Index",
            formula="(N * R) / (G ** 2.0)",
            reference="https://doi.org/10.1007/s11119-010-9204-3",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        EVI=SpectralIndex(
            short_name="EVI",
            long_name="Enhanced Vegetation Index",
            formula="g * (N - R) / (N + C1 * R - C2 * B + L)",
            reference="https://doi.org/10.1016/S0034-4257(96)00112-5",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        EVI2=SpectralIndex(
            short_name="EVI2",
            long_name="Two-Band Enhanced Vegetation Index",
            formula="g * (N - R) / (N + 2.4 * R + L)",
            reference="https://doi.org/10.1016/j.rse.2008.06.006",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GARI=SpectralIndex(
            short_name="GARI",
            long_name="Green Atmospherically Resistant Vegetation Index",
            formula="(N - (G - (B - R))) / (N - (G + (B - R)))",
            reference="https://doi.org/10.1016/S0034-4257(96)00072-7",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GBNDVI=SpectralIndex(
            short_name="GBNDVI",
            long_name="Green-Blue Normalized Difference Vegetation Index",
            formula="(N - (G + B))/(N + (G + B))",
            reference="https://doi.org/10.1016/S1672-6308(07)60027-4",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GEMI=SpectralIndex(
            short_name="GEMI",
            long_name="Global Environment Monitoring Index",
            formula="((2.0*((N ** 2.0)-(R ** 2.0)) + 1.5*N + 0.5*R)/(N + R + 0.5))*(1.0 - 0.25*((2.0 * ((N ** 2.0) - (R ** 2)) + 1.5 * N + 0.5 * R)/(N + R + 0.5)))-((R - 0.125)/(1 - R))",
            reference="http://dx.doi.org/10.1007/bf00031911",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GLI=SpectralIndex(
            short_name="GLI",
            long_name="Green Leaf Index",
            formula="(2.0 * G - R - B) / (2.0 * G + R + B)",
            reference="http://dx.doi.org/10.1080/10106040108542184",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GNDVI=SpectralIndex(
            short_name="GNDVI",
            long_name="Green Normalized Difference Vegetation Index",
            formula="(N - G)/(N + G)",
            reference="https://doi.org/10.1016/S0034-4257(96)00072-7",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GRNDVI=SpectralIndex(
            short_name="GRNDVI",
            long_name="Green-Red Normalized Difference Vegetation Index",
            formula="(N - (G + R))/(N + (G + R))",
            reference="https://doi.org/10.1016/S1672-6308(07)60027-4",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        GVMI=SpectralIndex(
            short_name="GVMI",
            long_name="Global Vegetation Moisture Index",
            formula="((N + 0.1) - (S2 + 0.02)) / ((N + 0.1) + (S2 + 0.02))",
            reference="https://doi.org/10.1016/S0034-4257(02)00037-8",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        MNDVI=SpectralIndex(
            short_name="MNDVI",
            long_name="Modified Normalized Difference Vegetation Index",
            formula="(N - S2)/(N + S2)",
            reference="https://doi.org/10.1080/014311697216810",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NDVI=SpectralIndex(
            short_name="NDVI",
            long_name="Normalized Difference Vegetation Index",
            formula="(N - R)/(N + R)",
            reference="https://ntrs.nasa.gov/citations/19740022614",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NGRDI=SpectralIndex(
            short_name="NGRDI",
            long_name="Normalized Green Red Difference Index",
            formula="(G - R) / (G + R)",
            reference="https://doi.org/10.1016/0034-4257(79)90013-0",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        RVI=SpectralIndex(
            short_name="RVI",
            long_name="Ratio Vegetation Index",
            formula="RE2 / R",
            reference="https://doi.org/10.2134/agronj1968.00021962006000060016x",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        SAVI=SpectralIndex(
            short_name="SAVI",
            long_name="Soil-Adjusted Vegetation Index",
            formula="(1.0 + L) * (N - R) / (N + R + L)",
            reference="https://doi.org/10.1016/0034-4257(88)90106-X",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        VARI=SpectralIndex(
            short_name="VARI",
            long_name="Visible Atmospherically Resistant Index",
            formula="(G - R) / (G + R - B)",
            reference="https://doi.org/10.1016/S0034-4257(01)00289-9",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        BAI=SpectralIndex(
            short_name="BAI",
            long_name="Burned Area Index",
            formula="1.0 / ((0.1 - R) ** 2.0 + (0.06 - N) ** 2.0)",
            reference="https://digital.csic.es/bitstream/10261/6426/1/Martin_Isabel_Serie_Geografica.pdf",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        BAIS2=SpectralIndex(
            short_name="BAIS2",
            long_name="Burned Area Index for Sentinel 2",
            formula="(1.0 - ((RE2 * RE3 * N2) / R) ** 0.5) * (((S2 - N2)/(S2 + N2) ** 0.5) + 1.0)",
            reference="https://doi.org/10.3390/ecrs-2-05177",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        CSIT=SpectralIndex(
            short_name="CSIT",
            long_name="Char Soil Index Thermal",
            formula="N / (S2 * T / 10000.0)",
            reference="https://doi.org/10.1080/01431160600954704",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NBR=SpectralIndex(
            short_name="NBR",
            long_name="Normalized Burn Ratio",
            formula="(N - S2) / (N + S2)",
            reference="https://doi.org/10.3133/ofr0211",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NBRT1=SpectralIndex(
            short_name="NBRT1",
            long_name="Normalized Burn Ratio Thermal 1",
            formula="(N - (S2 * T / 10000.0)) / (N + (S2 * T / 10000.0))",
            reference="https://doi.org/10.1080/01431160500239008",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NDVIT=SpectralIndex(
            short_name="NDVIT",
            long_name="Normalized Difference Vegetation Index Thermal",
            formula="(N - (R * T / 10000.0))/(N + (R * T / 10000.0))",
            reference="https://doi.org/10.1080/01431160600954704",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        SAVIT=SpectralIndex(
            short_name="SAVIT",
            long_name="Soil-Adjusted Vegetation Index Thermal",
            formula="(1.0 + L) * (N - (R * T / 10000.0)) / (N + (R * T / 10000.0) + L)",
            reference="https://doi.org/10.1080/01431160600954704",
            application_domain="burn",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        MNDWI=SpectralIndex(
            short_name="MNDWI",
            long_name="Modified Normalized Difference Water Index",
            formula="(G - S1) / (G + S1)",
            reference="https://doi.org/10.1080/01431160600589179",
            application_domain="water",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NDWI=SpectralIndex(
            short_name="NDWI",
            long_name="Normalized Difference Water Index",
            formula="(G - N) / (G + N)",
            reference="https://doi.org/10.1080/01431169608948714",
            application_domain="water",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NDSI=SpectralIndex(
            short_name="NDSI",
            long_name="Normalized Difference Snow Index",
            formula="(G - S1) / (G + S1)",
            reference="https://doi.org/10.1109/IGARSS.1994.399618",
            application_domain="snow",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        NDDI=SpectralIndex(
            short_name="NDDI",
            long_name="Normalized Difference Drought Index",
            formula="(((N - R)/(N + R)) - ((G - N)/(G + N)))/(((N - R)/(N + R)) + ((G - N)/(G + N)))",
            reference="https://doi.org/10.1029/2006GL029127",
            application_domain="vegetation",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        kEVI=SpectralIndex(
            short_name="kEVI",
            long_name="Kernel Enhanced Vegetation Index",
            formula="g * (kNN - kNR) / (kNN + C1 * kNR - C2 * kNB + kNL)",
            reference="https://doi.org/10.1126/sciadv.abc7447",
            application_domain="kernel",
            date_of_addition="2021-05-10",
            contributor="https://github.com/davemlz",
        ),
        kNDVI=SpectralIndex(
            short_name="kNDVI",
            long_name="Kernel Normalized Difference Vegetation Index",
            formula="(kNN - kNR)/(kNN + kNR)",
            reference="https://doi.org/10.1126/sciadv.abc7447",
            application_domain="kernel",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        kRVI=SpectralIndex(
            short_name="kRVI",
            long_name="Kernel Ratio Vegetation Index",
            formula="kNN / kNR",
            reference="https://doi.org/10.1126/sciadv.abc7447",
            application_domain="kernel",
            date_of_addition="2021-04-07",
            contributor="https://github.com/davemlz",
        ),
        kVARI=SpectralIndex(
            short_name="kVARI",
            long_name="Kernel Visible Atmospherically Resistant Index",
            formula="(kGG - kGR) / (kGG + kGR - kGB)",
            reference="https://doi.org/10.1126/sciadv.abc7447",
            application_domain="kernel",
            date_of_addition="2021-05-10",
            contributor="https://github.com/davemlz",
        ),
        SeLI=SpectralIndex(
            short_name="SeLI",
            long_name="Sentinel-2 LAI Green Index",
            formula="(N2 - RE1) / (N2 + RE1)",
            reference="https://doi.org/10.3390/s19040904",
            application_domain="vegetation",
            date_of_addition="2021-04-08",
            contributor="https://github.com/davemlz",
        ),
        OSAVI=SpectralIndex(
            short_name="OSAVI",
            long_name="Optimized Soil-Adjusted Vegetation Index",
            formula="(N - R) / (N + R + 0.16)",
            reference="https://doi.org/10.1016/0034-4257(95)00186-7",
            application_domain="vegetation",
            date_of_addition="2021-05-11",
            contributor="https://github.com/davemlz",
        ),
        ARVI=SpectralIndex(
            short_name="ARVI",
            long_name="Atmospherically Resistant Vegetation Index",
            formula="(N - (R - gamma * (R - B))) / (N + (R - gamma * (R - B)))",
            reference="https://doi.org/10.1109/36.134076",
            application_domain="vegetation",
            date_of_addition="2021-05-11",
            contributor="https://github.com/davemlz",
        ),
        SARVI=SpectralIndex(
            short_name="SARVI",
            long_name="Soil Adjusted and Atmospherically Resistant Vegetation Index",
            formula="(1 + L)*(N - (R - (R - B))) / (N + (R - (R - B)) + L)",
            reference="https://doi.org/10.1109/36.134076",
            application_domain="vegetation",
            date_of_addition="2021-05-11",
            contributor="https://github.com/davemlz",
        ),
        NLI=SpectralIndex(
            short_name="NLI",
            long_name="Non-Linear Vegetation Index",
            formula="((N ** 2) - R)/((N ** 2) + R)",
            reference="https://doi.org/10.1080/02757259409532252",
            application_domain="vegetation",
            date_of_addition="2021-05-11",
            contributor="https://github.com/davemlz",
        ),
        MNLI=SpectralIndex(
            short_name="MNLI",
            long_name="Modified Non-Linear Vegetation Index",
            formula="(1 + L)*((N ** 2) - R)/((N ** 2) + R + L)",
            reference="https://doi.org/10.1109/TGRS.2003.812910",
            application_domain="vegetation",
            date_of_addition="2021-05-11",
            contributor="https://github.com/davemlz",
        ),
        NMDI=SpectralIndex(
            short_name="NMDI",
            long_name="Normalized Multi-band Drought Index",
            formula="(N - (S1 - S2))/(N + (S1 - S2))",
            reference="https://doi.org/10.1029/2007GL031021",
            application_domain="vegetation",
            date_of_addition="2021-05-11",
            contributor="https://github.com/davemlz",
        ),
        MSAVI=SpectralIndex(
            short_name="MSAVI",
            long_name="Modified Soil-Adjusted Vegetation Index",
            formula="0.5 * (2.0 * N + 1 - (((2 * N + 1) ** 2) - 8 * (N - R)) ** 0.5)",
            reference="https://doi.org/10.1016/0034-4257(94)90134-1",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        MCARI=SpectralIndex(
            short_name="MCARI",
            long_name="Modified Chlorophyll Absorption in Reflectance Index",
            formula="((RE1 - R) - 0.2 * (RE1 - G)) * (RE1 / R)",
            reference="http://dx.doi.org/10.1016/S0034-4257(00)00113-9",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        OCVI=SpectralIndex(
            short_name="OCVI",
            long_name="Optimized Chlorophyll Vegetation Index",
            formula="(N / G) * (R / G) ** cexp",
            reference="http://dx.doi.org/10.1007/s11119-008-9075-z",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        NDREI=SpectralIndex(
            short_name="NDREI",
            long_name="Normalized Difference Red Edge Index",
            formula="(N - RE1) / (N + RE1)",
            reference="https://doi.org/10.1016/1011-1344(93)06963-4",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        CIRE=SpectralIndex(
            short_name="CIRE",
            long_name="Chlorophyll Index Red Edge",
            formula="(N / RE1) - 1",
            reference="https://doi.org/10.1078/0176-1617-00887",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        MTCI=SpectralIndex(
            short_name="MTCI",
            long_name="MERIS Terrestrial Chlorophyll Index",
            formula="(RE2 - RE1) / (RE1 - R)",
            reference="https://doi.org/10.1080/0143116042000274015",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        TCARI=SpectralIndex(
            short_name="TCARI",
            long_name="Transformed Chlorophyll Absorption in Reflectance Index",
            formula="3 * ((RE1 - R) - 0.2 * (RE1 - G) * (RE1 / R))",
            reference="https://doi.org/10.1016/S0034-4257(02)00018-4",
            application_domain="vegetation",
            date_of_addition="2021-05-13",
            contributor="https://github.com/davemlz",
        ),
        GDVI=SpectralIndex(
            short_name="GDVI",
            long_name="Generalized Difference Vegetation Index",
            formula="((N ** nexp) - (R ** nexp)) / ((N ** nexp) + (R ** nexp))",
            reference="https://doi.org/10.3390/rs6021211",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        WDRVI=SpectralIndex(
            short_name="WDRVI",
            long_name="Wide Dynamic Range Vegetation Index",
            formula="(alpha * N - R) / (alpha * N + R)",
            reference="https://doi.org/10.1078/0176-1617-01176",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        MCARI1=SpectralIndex(
            short_name="MCARI1",
            long_name="Modified Chlorophyll Absorption in Reflectance Index 1",
            formula="1.2 * (2.5 * (N - R) - 1.3 * (N - G))",
            reference="https://doi.org/10.1016/j.rse.2003.12.013",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        MTVI1=SpectralIndex(
            short_name="MTVI1",
            long_name="Modified Triangular Vegetation Index 1",
            formula="1.2 * (1.2 * (N - G) - 2.5 * (R - G))",
            reference="https://doi.org/10.1016/j.rse.2003.12.013",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        MCARI2=SpectralIndex(
            short_name="MCARI2",
            long_name="Modified Chlorophyll Absorption in Reflectance Index 2",
            formula="(1.5 * (2.5 * (N - R) - 1.3 * (N - G))) / ((((2.0 * N + 1) ** 2) - (6.0 * N - 5 * (R ** 0.5)) - 0.5) ** 0.5)",
            reference="https://doi.org/10.1016/j.rse.2003.12.013",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        MTVI2=SpectralIndex(
            short_name="MTVI2",
            long_name="Modified Triangular Vegetation Index 2",
            formula="(1.5 * (1.2 * (N - G) - 2.5 * (R - G))) / ((((2.0 * N + 1) ** 2) - (6.0 * N - 5 * (R ** 0.5)) - 0.5) ** 0.5)",
            reference="https://doi.org/10.1016/j.rse.2003.12.013",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        TriVI=SpectralIndex(
            short_name="TriVI",
            long_name="Triangular Vegetation Index",
            formula="0.5 * (120 * (N - G) - 200 * (R - G))",
            reference="http://dx.doi.org/10.1016/S0034-4257(00)00197-8",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        MSR=SpectralIndex(
            short_name="MSR",
            long_name="Modified Simple Ratio",
            formula="(N / R - 1) / ((N / R + 1) ** 0.5)",
            reference="https://doi.org/10.1080/07038992.1996.10855178",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        RDVI=SpectralIndex(
            short_name="RDVI",
            long_name="Renormalized Difference Vegetation Index",
            formula="(N - R) / ((N + R) ** 0.5)",
            reference="https://doi.org/10.1016/0034-4257(94)00114-3",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        NDBI=SpectralIndex(
            short_name="NDBI",
            long_name="Normalized Difference Built-Up Index",
            formula="(S1 - N) / (S1 + N)",
            reference="http://dx.doi.org/10.1080/01431160304987",
            application_domain="urban",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        MGRVI=SpectralIndex(
            short_name="MGRVI",
            long_name="Modified Green Red Vegetation Index",
            formula="(G ** 2.0 - R ** 2.0) / (G ** 2.0 + R ** 2.0)",
            reference="https://doi.org/10.1016/j.jag.2015.02.012",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        ExG=SpectralIndex(
            short_name="ExG",
            long_name="Excess Green Index",
            formula="2 * G - R - B",
            reference="https://doi.org/10.13031/2013.27838",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        DVI=SpectralIndex(
            short_name="DVI",
            long_name="Difference Vegetation Index",
            formula="N - R",
            reference="https://doi.org/10.1016/0034-4257(94)00114-3",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        WDVI=SpectralIndex(
            short_name="WDVI",
            long_name="Weighted Difference Vegetation Index",
            formula="N - sla * R",
            reference="https://doi.org/10.1016/0034-4257(89)90076-X",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        TSAVI=SpectralIndex(
            short_name="TSAVI",
            long_name="Transformed Soil-Adjusted Vegetation Index",
            formula="sla * (N - sla * R - slb) / (sla * N + R - sla * slb)",
            reference="https://doi.org/10.1109/IGARSS.1989.576128",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        ATSAVI=SpectralIndex(
            short_name="ATSAVI",
            long_name="Adjusted Transformed Soil-Adjusted Vegetation Index",
            formula="sla * (N - sla * R - slb) / (sla * N + R - sla * slb + 0.08 * (1 + sla ** 2.0))",
            reference="https://doi.org/10.1016/0034-4257(91)90009-U",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        SAVI2=SpectralIndex(
            short_name="SAVI2",
            long_name="Soil-Adjusted Vegetation Index 2",
            formula="N / (R + (slb / sla))",
            reference="https://doi.org/10.1080/01431169008955053",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        TCI=SpectralIndex(
            short_name="TCI",
            long_name="Triangular Chlorophyll Index",
            formula="1.2 * (RE1 - G) - 1.5 * (R - G) * (RE1 / R) ** 0.5",
            reference="http://dx.doi.org/10.1109/TGRS.2007.904836",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        TGI=SpectralIndex(
            short_name="TGI",
            long_name="Triangular Greenness Index",
            formula="- 0.5 * (190 * (R - G) - 120 * (R - B))",
            reference="http://dx.doi.org/10.1016/j.jag.2012.07.020",
            application_domain="vegetation",
            date_of_addition="2021-05-14",
            contributor="https://github.com/davemlz",
        ),
        IRECI=SpectralIndex(
            short_name="IRECI",
            long_name="Inverted Red-Edge Chlorophyll Index",
            formula="(RE3 - R) / (RE1 / RE2)",
            reference="https://doi.org/10.1016/j.isprsjprs.2013.04.007",
            application_domain="vegetation",
            date_of_addition="2021-09-17",
            contributor="https://github.com/davemlz",
        ),
        S2REP=SpectralIndex(
            short_name="S2REP",
            long_name="Sentinel-2 Red-Edge Position",
            formula="705.0 + 35.0 * ((((RE3 + R) / 2.0) - RE1) / (RE2 - RE1))",
            reference="https://doi.org/10.1016/j.isprsjprs.2013.04.007",
            application_domain="vegetation",
            date_of_addition="2021-09-17",
            contributor="https://github.com/davemlz",
        ),
        EBBI=SpectralIndex(
            short_name="EBBI",
            long_name="Enhanced Built-Up and Bareness Index",
            formula="(S1 - N) / (10.0 * ((S1 + T) ** 0.5))",
            reference="https://doi.org/10.3390/rs4102957",
            application_domain="urban",
            date_of_addition="2021-09-17",
            contributor="https://github.com/davemlz",
        ),
        NDBaI=SpectralIndex(
            short_name="NDBaI",
            long_name="Normalized Difference Bareness Index",
            formula="(S1 - T) / (S1 + T)",
            reference="https://doi.org/10.1109/IGARSS.2005.1526319",
            application_domain="soil",
            date_of_addition="2021-09-17",
            contributor="https://github.com/davemlz",
        ),
        SIPI=SpectralIndex(
            short_name="SIPI",
            long_name="Structure Insensitive Pigment Index",
            formula="(N - A) / (N - R)",
            reference="https://eurekamag.com/research/009/395/009395053.php",
            application_domain="vegetation",
            date_of_addition="2021-09-17",
            contributor="https://github.com/davemlz",
        ),
        NHFD=SpectralIndex(
            short_name="NHFD",
            long_name="Non-Homogeneous Feature Difference",
            formula="(RE1 - A) / (RE1 + A)",
            reference="https://www.semanticscholar.org/paper/Using-WorldView-2-Vis-NIR-MSI-Imagery-to-Support-Wolf/5e5063ccc4ee76b56b721c866e871d47a77f9fb4",
            application_domain="urban",
            date_of_addition="2021-09-17",
            contributor="https://github.com/davemlz",
        ),
        NDYI=SpectralIndex(
            short_name="NDYI",
            long_name="Normalized Difference Yellowness Index",
            formula="(G - B) / (G + B)",
            reference="https://doi.org/10.1016/j.rse.2016.06.016",
            application_domain="vegetation",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        NRFIr=SpectralIndex(
            short_name="NRFIr",
            long_name="Normalized Rapeseed Flowering Index Red",
            formula="(R - S2) / (R + S2)",
            reference="https://doi.org/10.3390/rs13010105",
            application_domain="vegetation",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        NRFIg=SpectralIndex(
            short_name="NRFIg",
            long_name="Normalized Rapeseed Flowering Index Green",
            formula="(G - S2) / (G + S2)",
            reference="https://doi.org/10.3390/rs13010105",
            application_domain="vegetation",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        TRRVI=SpectralIndex(
            short_name="TRRVI",
            long_name="Transformed Red Range Vegetation Index",
            formula="((RE2 - R) / (RE2 + R)) / (((N - R) / (N + R)) + 1.0)",
            reference="https://doi.org/10.3390/rs12152359",
            application_domain="vegetation",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        TTVI=SpectralIndex(
            short_name="TTVI",
            long_name="Transformed Triangular Vegetation Index",
            formula="0.5 * ((865.0 - 740.0) * (RE3 - RE2) - (N2 - RE2) * (783.0 - 740))",
            reference="https://doi.org/10.3390/rs12010016",
            application_domain="vegetation",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        NDSaII=SpectralIndex(
            short_name="NDSaII",
            long_name="Normalized Difference Snow and Ice Index",
            formula="(R - S1) / (R + S1)",
            reference="https://doi.org/10.1080/01431160119766",
            application_domain="snow",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        SWI=SpectralIndex(
            short_name="SWI",
            long_name="Snow Water Index",
            formula="(G * (N - S1)) / ((G + N) * (N + S1))",
            reference="https://doi.org/10.3390/rs11232774",
            application_domain="snow",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        S3=SpectralIndex(
            short_name="S3",
            long_name="S3 Snow Index",
            formula="(N * (R - S1)) / ((N + R) * (N + S1))",
            reference="https://doi.org/10.3178/jjshwr.12.28",
            application_domain="snow",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        WI1=SpectralIndex(
            short_name="WI1",
            long_name="Water Index 1",
            formula="(G - S2) / (G + S2)",
            reference="https://doi.org/10.3390/rs11182186",
            application_domain="water",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        WI2=SpectralIndex(
            short_name="WI2",
            long_name="Water Index 2",
            formula="(B - S2) / (B + S2)",
            reference="https://doi.org/10.3390/rs11182186",
            application_domain="water",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        AWEInsh=SpectralIndex(
            short_name="AWEInsh",
            long_name="Automated Water Extraction Index",
            formula="4.0 * (G - S1) - 0.25 * N + 2.75 * S2",
            reference="https://doi.org/10.1016/j.rse.2013.08.029",
            application_domain="water",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        AWEIsh=SpectralIndex(
            short_name="AWEIsh",
            long_name="Automated Water Extraction Index with Shadows Elimination",
            formula="B + 2.5 * G - 1.5 * (N + S1) - 0.25 * S2",
            reference="https://doi.org/10.1016/j.rse.2013.08.029",
            application_domain="water",
            date_of_addition="2021-09-18",
            contributor="https://github.com/davemlz",
        ),
        NBR2=SpectralIndex(
            short_name="NBR2",
            long_name="Normalized Burn Ratio 2",
            formula="(S1 - S2) / (S1 + S2)",
            reference="https://www.usgs.gov/core-science-systems/nli/landsat/landsat-normalized-burn-ratio-2",
            application_domain="burn",
            date_of_addition="2021-09-20",
            contributor="https://github.com/davemlz",
        ),
        BWDRVI=SpectralIndex(
            short_name="BWDRVI",
            long_name="Blue Wide Dynamic Range Vegetation Index",
            formula="(alpha * N - B) / (alpha * N + B)",
            reference="https://doi.org/10.2135/cropsci2007.01.0031",
            application_domain="vegetation",
            date_of_addition="2021-09-20",
            contributor="https://github.com/davemlz",
        ),
        ARI=SpectralIndex(
            short_name="ARI",
            long_name="Anthocyanin Reflectance Index",
            formula="(1 / G) - (1 / RE1)",
            reference="https://doi.org/10.1562/0031-8655(2001)074%3C0038:OPANEO%3E2.0.CO;2",
            application_domain="vegetation",
            date_of_addition="2021-09-20",
            contributor="https://github.com/davemlz",
        ),
        VIG=SpectralIndex(
            short_name="VIG",
            long_name="Vegetation Index Green",
            formula="(G - R) / (G + R)",
            reference="https://doi.org/10.1016/S0034-4257(01)00289-9",
            application_domain="vegetation",
            date_of_addition="2021-09-20",
            contributor="https://github.com/davemlz",
        ),
        VI700=SpectralIndex(
            short_name="VI700",
            long_name="Vegetation Index (700 nm)",
            formula="(RE1 - R) / (RE1 + R)",
            reference="https://doi.org/10.1016/S0034-4257(01)00289-9",
            application_domain="vegetation",
            date_of_addition="2021-09-20",
            contributor="https://github.com/davemlz",
        ),
        VARI700=SpectralIndex(
            short_name="VARI700",
            long_name="Visible Atmospherically Resistant Index (700 nm)",
            formula="(RE1 - 1.7 * R + 0.7 * B) / (RE1 + 1.3 * R - 1.3 * B)",
            reference="https://doi.org/10.1016/S0034-4257(01)00289-9",
            application_domain="vegetation",
            date_of_addition="2021-09-20",
            contributor="https://github.com/davemlz",
        ),
        TCARIOSAVI=SpectralIndex(
            short_name="TCARIOSAVI",
            long_name="TCARI/OSAVI Ratio",
            formula="(3 * ((RE1 - R) - 0.2 * (RE1 - G) * (RE1 / R))) / (1.16 * (N - R) / (N + R + 0.16))",
            reference="https://doi.org/10.1016/S0034-4257(02)00018-4",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        MCARIOSAVI=SpectralIndex(
            short_name="MCARIOSAVI",
            long_name="MCARI/OSAVI Ratio",
            formula="(((RE1 - R) - 0.2 * (RE1 - G)) * (RE1 / R)) / (1.16 * (N - R) / (N + R + 0.16))",
            reference="https://doi.org/10.1016/S0034-4257(00)00113-9",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        TCARIOSAVI705=SpectralIndex(
            short_name="TCARIOSAVI705",
            long_name="TCARI/OSAVI Ratio (705 and 750 nm)",
            formula="(3 * ((RE2 - RE1) - 0.2 * (RE2 - G) * (RE2 / RE1))) / (1.16 * (RE2 - RE1) / (RE2 + RE1 + 0.16))",
            reference="https://doi.org/10.1016/j.agrformet.2008.03.005",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        MCARIOSAVI705=SpectralIndex(
            short_name="MCARIOSAVI705",
            long_name="MCARI/OSAVI Ratio (705 and 750 nm)",
            formula="(((RE2 - RE1) - 0.2 * (RE2 - G)) * (RE2 / RE1)) / (1.16 * (RE2 - RE1) / (RE2 + RE1 + 0.16))",
            reference="https://doi.org/10.1016/j.agrformet.2008.03.005",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        MCARI705=SpectralIndex(
            short_name="MCARI705",
            long_name="Modified Chlorophyll Absorption in Reflectance Index (705 and 750 nm)",
            formula="((RE2 - RE1) - 0.2 * (RE2 - G)) * (RE2 / RE1)",
            reference="https://doi.org/10.1016/j.agrformet.2008.03.005",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        MSR705=SpectralIndex(
            short_name="MSR705",
            long_name="Modified Simple Ratio (705 and 750 nm)",
            formula="(RE2 / RE1 - 1) / ((RE2 / RE1 + 1) ** 0.5)",
            reference="https://doi.org/10.1016/j.agrformet.2008.03.005",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        NDVI705=SpectralIndex(
            short_name="NDVI705",
            long_name="Normalized Difference Vegetation Index (705 and 750 nm)",
            formula="(RE2 - RE1) / (RE2 + RE1)",
            reference="https://doi.org/10.1016/S0176-1617(11)81633-0",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        SR705=SpectralIndex(
            short_name="SR705",
            long_name="Simple Ratio (705 and 750 nm)",
            formula="RE2 / RE1",
            reference="https://doi.org/10.1016/S0176-1617(11)81633-0",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        SR555=SpectralIndex(
            short_name="SR555",
            long_name="Simple Ratio (555 and 750 nm)",
            formula="RE2 / G",
            reference="https://doi.org/10.1016/S0176-1617(11)81633-0",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        REDSI=SpectralIndex(
            short_name="REDSI",
            long_name="Red-Edge Disease Stress Index",
            formula="((705.0 - 665.0) * (RE3 - R) - (783.0 - 665.0) * (RE1 - R)) / (2.0 * R)",
            reference="https://doi.org/10.3390/s18030868",
            application_domain="vegetation",
            date_of_addition="2021-11-06",
            contributor="https://github.com/davemlz",
        ),
        NIRv=SpectralIndex(
            short_name="NIRv",
            long_name="Near-Infrared Reflectance of Vegetation",
            formula="((N - R) / (N + R)) * N",
            reference="https://doi.org/10.1126/sciadv.1602244",
            application_domain="vegetation",
            date_of_addition="2021-11-16",
            contributor="https://github.com/davemlz",
        ),
        AFRI2100=SpectralIndex(
            short_name="AFRI2100",
            long_name="Aerosol Free Vegetation Index (2100 nm)",
            formula="(N - 0.5 * S2) / (N + 0.5 * S2)",
            reference="https://doi.org/10.1016/S0034-4257(01)00190-0",
            application_domain="vegetation",
            date_of_addition="2021-11-17",
            contributor="https://github.com/davemlz",
        ),
        AFRI1600=SpectralIndex(
            short_name="AFRI1600",
            long_name="Aerosol Free Vegetation Index (1600 nm)",
            formula="(N - 0.66 * S1) / (N + 0.66 * S1)",
            reference="https://doi.org/10.1016/S0034-4257(01)00190-0",
            application_domain="vegetation",
            date_of_addition="2021-11-17",
            contributor="https://github.com/davemlz",
        ),
        NIRvP=SpectralIndex(
            short_name="NIRvP",
            long_name="Near-Infrared Reflectance of Vegetation and Incoming PAR",
            formula="((N - R) / (N + R)) * N * PAR",
            reference="https://doi.org/10.1016/j.rse.2021.112763",
            application_domain="vegetation",
            date_of_addition="2021-11-18",
            contributor="https://github.com/davemlz",
        ),
        NDMI=SpectralIndex(
            short_name="NDMI",
            long_name="Normalized Difference Moisture Index",
            formula="(N - S1)/(N + S1)",
            reference="https://doi.org/10.1016/S0034-4257(01)00318-2",
            application_domain="vegetation",
            date_of_addition="2021-12-01",
            contributor="https://github.com/bpurinton",
        ),
        QpRVI=SpectralIndex(
            short_name="QpRVI",
            long_name="Quad-Polarized Radar Vegetation Index",
            formula="(8.0 * HV)/(HH + VV + 2.0 * HV)",
            reference="https://doi.org/10.1109/IGARSS.2001.976856",
            application_domain="radar",
            date_of_addition="2021-12-24",
            contributor="https://github.com/davemlz",
        ),
        RFDI=SpectralIndex(
            short_name="RFDI",
            long_name="Radar Forest Degradation Index",
            formula="(HH - HV)/(HH + HV)",
            reference="https://doi.org/10.5194/bg-9-179-2012",
            application_domain="radar",
            date_of_addition="2021-12-25",
            contributor="https://github.com/davemlz",
        ),
        DpRVIHH=SpectralIndex(
            short_name="DpRVIHH",
            long_name="Dual-Polarized Radar Vegetation Index HH",
            formula="(4.0 * HV)/(HH + HV)",
            reference="https://www.tandfonline.com/doi/abs/10.5589/m12-043",
            application_domain="radar",
            date_of_addition="2021-12-25",
            contributor="https://github.com/davemlz",
        ),
        DpRVIVV=SpectralIndex(
            short_name="DpRVIVV",
            long_name="Dual-Polarized Radar Vegetation Index VV",
            formula="(4.0 * VH)/(VV + VH)",
            reference="https://doi.org/10.3390/app9040655",
            application_domain="radar",
            date_of_addition="2021-12-25",
            contributor="https://github.com/davemlz",
        ),
        NWI=SpectralIndex(
            short_name="NWI",
            long_name="New Water Index",
            formula="(B - (N + S1 + S2))/(B + (N + S1 + S2))",
            reference="https://doi.org/10.11873/j.issn.1004-0323.2009.2.167",
            application_domain="water",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        WRI=SpectralIndex(
            short_name="WRI",
            long_name="Water Ratio Index",
            formula="(G + R)/(N + S1)",
            reference="https://doi.org/10.1109/GEOINFORMATICS.2010.5567762",
            application_domain="water",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        NDVIMNDWI=SpectralIndex(
            short_name="NDVIMNDWI",
            long_name="NDVI-MNDWI Model",
            formula="((N - R)/(N + R)) - ((G - S1)/(G + S1))",
            reference="https://doi.org/10.1007/978-3-662-45737-5_51",
            application_domain="water",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        MBWI=SpectralIndex(
            short_name="MBWI",
            long_name="Multi-Band Water Index",
            formula="(omega * G) - R - N - S1 - S2",
            reference="https://doi.org/10.1016/j.jag.2018.01.018",
            application_domain="water",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        GCC=SpectralIndex(
            short_name="GCC",
            long_name="Green Chromatic Coordinate",
            formula="G / (R + G + B)",
            reference="https://doi.org/10.1016/0034-4257(87)90088-5",
            application_domain="vegetation",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        RCC=SpectralIndex(
            short_name="RCC",
            long_name="Red Chromatic Coordinate",
            formula="R / (R + G + B)",
            reference="https://doi.org/10.1016/0034-4257(87)90088-5",
            application_domain="vegetation",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        BCC=SpectralIndex(
            short_name="BCC",
            long_name="Blue Chromatic Coordinate",
            formula="B / (R + G + B)",
            reference="https://doi.org/10.1016/0034-4257(87)90088-5",
            application_domain="vegetation",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        NIRvH2=SpectralIndex(
            short_name="NIRvH2",
            long_name="Hyperspectral Near-Infrared Reflectance of Vegetation",
            formula="N - R - k * (lambdaN - lambdaR)",
            reference="https://doi.org/10.1016/j.rse.2021.112723",
            application_domain="vegetation",
            date_of_addition="2022-01-17",
            contributor="https://github.com/davemlz",
        ),
        NDPI=SpectralIndex(
            short_name="NDPI",
            long_name="Normalized Difference Phenology Index",
            formula="(N - (alpha * R + (1.0 - alpha) * S1))/(N + (alpha * R + (1.0 - alpha) * S1))",
            reference="https://doi.org/10.1016/j.rse.2017.04.031",
            application_domain="vegetation",
            date_of_addition="2022-01-20",
            contributor="https://github.com/davemlz",
        ),
        NDII=SpectralIndex(
            short_name="NDII",
            long_name="Normalized Difference Infrared Index",
            formula="(N - S1)/(N + S1)",
            reference="https://www.asprs.org/wp-content/uploads/pers/1983journal/jan/1983_jan_77-83.pdf",
            application_domain="vegetation",
            date_of_addition="2022-01-20",
            contributor="https://github.com/davemlz",
        ),
        DVIplus=SpectralIndex(
            short_name="DVIplus",
            long_name="Difference Vegetation Index Plus",
            formula="((lambdaN - lambdaR)/(lambdaN - lambdaG)) * G + (1.0 - ((lambdaN - lambdaR)/(lambdaN - lambdaG))) * N - R",
            reference="https://doi.org/10.1016/j.rse.2019.03.028",
            application_domain="vegetation",
            date_of_addition="2022-01-20",
            contributor="https://github.com/davemlz",
        ),
        NDGI=SpectralIndex(
            short_name="NDGI",
            long_name="Normalized Difference Greenness Index",
            formula="(((lambdaN - lambdaR)/(lambdaN - lambdaG)) * G + (1.0 - ((lambdaN - lambdaR)/(lambdaN - lambdaG))) * N - R)/(((lambdaN - lambdaR)/(lambdaN - lambdaG)) * G + (1.0 - ((lambdaN - lambdaR)/(lambdaN - lambdaG))) * N + R)",
            reference="https://doi.org/10.1016/j.rse.2019.03.028",
            application_domain="vegetation",
            date_of_addition="2022-01-20",
            contributor="https://github.com/davemlz",
        ),
        FCVI=SpectralIndex(
            short_name="FCVI",
            long_name="Fluorescence Correction Vegetation Index",
            formula="N - ((R + G + B)/3.0)",
            reference="https://doi.org/10.1016/j.rse.2020.111676",
            application_domain="vegetation",
            date_of_addition="2022-01-20",
            contributor="https://github.com/davemlz",
        ),
        UI=SpectralIndex(
            short_name="UI",
            long_name="Urban Index",
            formula="(S2 - N)/(S2 + N)",
            reference="https://www.isprs.org/proceedings/XXXI/congress/part7/321_XXXI-part7.pdf",
            application_domain="urban",
            date_of_addition="2022-02-07",
            contributor="https://github.com/davemlz",
        ),
        VrNIRBI=SpectralIndex(
            short_name="VrNIRBI",
            long_name="Visible Red-Based Built-Up Index",
            formula="(R - N)/(R + N)",
            reference="https://doi.org/10.1016/j.ecolind.2015.03.037",
            application_domain="urban",
            date_of_addition="2022-02-09",
            contributor="https://github.com/davemlz",
        ),
        VgNIRBI=SpectralIndex(
            short_name="VgNIRBI",
            long_name="Visible Green-Based Built-Up Index",
            formula="(G - N)/(G + N)",
            reference="https://doi.org/10.1016/j.ecolind.2015.03.037",
            application_domain="urban",
            date_of_addition="2022-02-09",
            contributor="https://github.com/davemlz",
        ),
        IBI=SpectralIndex(
            short_name="IBI",
            long_name="Index-Based Built-Up Index",
            formula="(((S1-N)/(S1+N))-(((N-R)*(1.0+L)/(N+R+L))+((G-S1)/(G+S1)))/2.0)/(((S1-N)/(S1+N))+(((N-R)*(1.0+L)/(N+R+L))+((G-S1)/(G+S1)))/2.0)",
            reference="https://doi.org/10.1080/01431160802039957",
            application_domain="urban",
            date_of_addition="2022-02-09",
            contributor="https://github.com/davemlz",
        ),
        BLFEI=SpectralIndex(
            short_name="BLFEI",
            long_name="Built-Up Land Features Extraction Index",
            formula="(((G+R+S2)/3.0)-S1)/(((G+R+S2)/3.0)+S1)",
            reference="https://doi.org/10.1080/10106049.2018.1497094",
            application_domain="urban",
            date_of_addition="2022-02-09",
            contributor="https://github.com/davemlz",
        ),
        S2WI=SpectralIndex(
            short_name="S2WI",
            long_name="Sentinel-2 Water Index",
            formula="(RE1 - S2)/(RE1 + S2)",
            reference="https://doi.org/10.3390/w13121647",
            application_domain="water",
            date_of_addition="2022-03-06",
            contributor="https://github.com/MATRIX4284",
        ),
        NDWIns=SpectralIndex(
            short_name="NDWIns",
            long_name="Normalized Difference Water Index with no Snow Cover and Glaciers",
            formula="(G - alpha * N)/(G + N)",
            reference="https://doi.org/10.3390/w12051339",
            application_domain="water",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NDSInw=SpectralIndex(
            short_name="NDSInw",
            long_name="Normalized Difference Snow Index with no Water",
            formula="(N - S1 - beta)/(N + S1)",
            reference="https://doi.org/10.3390/w12051339",
            application_domain="snow",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        ExGR=SpectralIndex(
            short_name="ExGR",
            long_name="ExG - ExR Vegetation Index",
            formula="(2.0 * G - R - B) - (1.3 * R - G)",
            reference="https://doi.org/10.1016/j.compag.2008.03.009",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        ExR=SpectralIndex(
            short_name="ExR",
            long_name="Excess Red Index",
            formula="1.3 * R - G",
            reference="https://doi.org/10.1117/12.336896",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        MRBVI=SpectralIndex(
            short_name="MRBVI",
            long_name="Modified Red Blue Vegetation Index",
            formula="(R ** 2.0 - B ** 2.0)/(R ** 2.0 + B ** 2.0)",
            reference="https://doi.org/10.3390/s20185055",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        AVI=SpectralIndex(
            short_name="AVI",
            long_name="Advanced Vegetation Index",
            formula="(N * (1.0 - R) * (N - R)) ** (1/3)",
            reference="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.465.8749&rep=rep1&type=pdf",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        BI=SpectralIndex(
            short_name="BI",
            long_name="Bare Soil Index",
            formula="((S1 + R) - (N + B))/((S1 + R) + (N + B))",
            reference="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.465.8749&rep=rep1&type=pdf",
            application_domain="soil",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        SI=SpectralIndex(
            short_name="SI",
            long_name="Shadow Index",
            formula="((1.0 - B) * (1.0 - G) * (1.0 - R)) ** (1/3)",
            reference="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.465.8749&rep=rep1&type=pdf",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        MSI=SpectralIndex(
            short_name="MSI",
            long_name="Moisture Stress Index",
            formula="S1/N",
            reference="https://doi.org/10.1016/0034-4257(89)90046-1",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NDGlaI=SpectralIndex(
            short_name="NDGlaI",
            long_name="Normalized Difference Glacier Index",
            formula="(G - R)/(G + R)",
            reference="https://doi.org/10.1080/01431160802385459",
            application_domain="snow",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NDSII=SpectralIndex(
            short_name="NDSII",
            long_name="Normalized Difference Snow Ice Index",
            formula="(G - N)/(G + N)",
            reference="https://doi.org/10.1080/01431160802385459",
            application_domain="snow",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        IKAW=SpectralIndex(
            short_name="IKAW",
            long_name="Kawashima Index",
            formula="(R - B)/(R + B)",
            reference="https://doi.org/10.1006/anbo.1997.0544",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        RGRI=SpectralIndex(
            short_name="RGRI",
            long_name="Red-Green Ratio Index",
            formula="R/G",
            reference="https://doi.org/10.1016/j.jag.2014.03.018",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        RGBVI=SpectralIndex(
            short_name="RGBVI",
            long_name="Red Green Blue Vegetation Index",
            formula="(G ** 2.0 - B * R)/(G ** 2.0 + B * R)",
            reference="https://doi.org/10.1016/j.jag.2015.02.012",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        ARI2=SpectralIndex(
            short_name="ARI2",
            long_name="Anthocyanin Reflectance Index 2",
            formula="N * ((1 / G) - (1 / RE1))",
            reference="https://doi.org/10.1562/0031-8655(2001)074%3C0038:OPANEO%3E2.0.CO;2",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NormNIR=SpectralIndex(
            short_name="NormNIR",
            long_name="Normalized NIR",
            formula="N/(N + G + R)",
            reference="https://doi.org/10.2134/agronj2004.0314",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NormR=SpectralIndex(
            short_name="NormR",
            long_name="Normalized Red",
            formula="R/(N + G + R)",
            reference="https://doi.org/10.2134/agronj2004.0314",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NormG=SpectralIndex(
            short_name="NormG",
            long_name="Normalized Green",
            formula="G/(N + G + R)",
            reference="https://doi.org/10.2134/agronj2004.0314",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        GRVI=SpectralIndex(
            short_name="GRVI",
            long_name="Green Ratio Vegetation Index",
            formula="N/G",
            reference="https://doi.org/10.2134/agronj2004.0314",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        GSAVI=SpectralIndex(
            short_name="GSAVI",
            long_name="Green Soil Adjusted Vegetation Index",
            formula="(1.0 + L) * (N - G) / (N + G + L)",
            reference="https://doi.org/10.2134/agronj2004.0314",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        GOSAVI=SpectralIndex(
            short_name="GOSAVI",
            long_name="Green Optimized Soil Adjusted Vegetation Index",
            formula="(N - G) / (N + G + 0.16)",
            reference="https://doi.org/10.2134/agronj2004.0314",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        SR=SpectralIndex(
            short_name="SR",
            long_name="Simple Ratio",
            formula="N/R",
            reference="https://doi.org/10.2307/1936256",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        TVI=SpectralIndex(
            short_name="TVI",
            long_name="Transformed Vegetation Index",
            formula="(((N - R)/(N + R)) + 0.5) ** 0.5",
            reference="https://ntrs.nasa.gov/citations/19740022614",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        GM1=SpectralIndex(
            short_name="GM1",
            long_name="Gitelson and Merzlyak Index 1",
            formula="RE2/G",
            reference="https://doi.org/10.1016/S0176-1617(96)80284-7",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        GM2=SpectralIndex(
            short_name="GM2",
            long_name="Gitelson and Merzlyak Index 2",
            formula="RE2/RE1",
            reference="https://doi.org/10.1016/S0176-1617(96)80284-7",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        IAVI=SpectralIndex(
            short_name="IAVI",
            long_name="New Atmospherically Resistant Vegetation Index",
            formula="(N - (R - gamma * (B - R)))/(N + (R - gamma * (B - R)))",
            reference="https://www.jipb.net/EN/abstract/abstract23925.shtml",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        IPVI=SpectralIndex(
            short_name="IPVI",
            long_name="Infrared Percentage Vegetation Index",
            formula="N/(N + R)",
            reference="https://doi.org/10.1016/0034-4257(90)90085-Z",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        kIPVI=SpectralIndex(
            short_name="kIPVI",
            long_name="Kernel Infrared Percentage Vegetation Index",
            formula="kNN/(kNN + kNR)",
            reference="https://doi.org/10.1126/sciadv.abc7447",
            application_domain="kernel",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        ND705=SpectralIndex(
            short_name="ND705",
            long_name="Normalized Difference (705 and 750 nm)",
            formula="(RE2 - RE1)/(RE2 + RE1)",
            reference="https://doi.org/10.1016/S0034-4257(02)00010-X",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        mSR705=SpectralIndex(
            short_name="mSR705",
            long_name="Modified Simple Ratio (705 and 445 nm)",
            formula="(RE2 - A)/(RE2 + A)",
            reference="https://doi.org/10.1016/S0034-4257(02)00010-X",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        mND705=SpectralIndex(
            short_name="mND705",
            long_name="Modified Normalized Difference (705, 750 and 445 nm)",
            formula="(RE2 - RE1)/(RE2 + RE1 - A)",
            reference="https://doi.org/10.1016/S0034-4257(02)00010-X",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        PSRI=SpectralIndex(
            short_name="PSRI",
            long_name="Plant Senescing Reflectance Index",
            formula="(R - B)/RE2",
            reference="https://doi.org/10.1034/j.1399-3054.1999.106119.x",
            application_domain="vegetation",
            date_of_addition="2022-04-08",
            contributor="https://github.com/davemlz",
        ),
        NBSIMS=SpectralIndex(
            short_name="NBSIMS",
            long_name="Non-Binary Snow Index for Multi-Component Surfaces",
            formula="0.36 * (G + R + N) - (((B + S2)/G) + S1)",
            reference="https://doi.org/10.3390/rs13142777",
            application_domain="snow",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        MuWIR=SpectralIndex(
            short_name="MuWIR",
            long_name="Revised Multi-Spectral Water Index",
            formula="-4.0 * ((B - G)/(B + G)) + 2.0 * ((G - N)/(G + N)) + 2.0 * ((G - S2)/(G + S2)) - ((G - S1)/(G + S1))",
            reference="https://doi.org/10.3390/rs10101643",
            application_domain="water",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        RENDVI=SpectralIndex(
            short_name="RENDVI",
            long_name="Red Edge Normalized Difference Vegetation Index",
            formula="(RE2 - RE1)/(RE2 + RE1)",
            reference="https://doi.org/10.1016/S0176-1617(11)81633-0",
            application_domain="vegetation",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        RI=SpectralIndex(
            short_name="RI",
            long_name="Redness Index",
            formula="(R - G)/(R + G)",
            reference="https://www.documentation.ird.fr/hor/fdi:34390",
            application_domain="vegetation",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        SR2=SpectralIndex(
            short_name="SR2",
            long_name="Simple Ratio (800 and 550 nm)",
            formula="N/G",
            reference="https://doi.org/10.1080/01431169308904370",
            application_domain="vegetation",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        SR3=SpectralIndex(
            short_name="SR3",
            long_name="Simple Ratio (860, 550 and 708 nm)",
            formula="N2/(G * RE1)",
            reference="https://doi.org/10.1016/S0034-4257(98)00046-7",
            application_domain="vegetation",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        TDVI=SpectralIndex(
            short_name="TDVI",
            long_name="Transformed Difference Vegetation Index",
            formula="1.5 * ((N - R)/((N ** 2.0 + R + 0.5) ** 0.5))",
            reference="https://doi.org/10.1109/IGARSS.2002.1026867",
            application_domain="vegetation",
            date_of_addition="2022-04-09",
            contributor="https://github.com/davemlz",
        ),
        NBUI=SpectralIndex(
            short_name="NBUI",
            long_name="New Built-Up Index",
            formula="((S1 - N)/(10.0 * (T + S1) ** 0.5)) - (((N - R) * (1.0 + L))/(N - R + L)) - (G - S1)/(G + S1)",
            reference="https://hdl.handle.net/1959.11/29500",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        PISI=SpectralIndex(
            short_name="PISI",
            long_name="Perpendicular Impervious Surface Index",
            formula="0.8192 * B - 0.5735 * N + 0.0750",
            reference="https://doi.org/10.3390/rs10101521",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NDISIr=SpectralIndex(
            short_name="NDISIr",
            long_name="Normalized Difference Impervious Surface Index Red",
            formula="(T - (R + N + S1) / 3.0)/(T + (R + N + S1) / 3.0)",
            reference="https://doi.org/10.14358/PERS.76.5.557",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NDISIg=SpectralIndex(
            short_name="NDISIg",
            long_name="Normalized Difference Impervious Surface Index Green",
            formula="(T - (G + N + S1) / 3.0)/(T + (G + N + S1) / 3.0)",
            reference="https://doi.org/10.14358/PERS.76.5.557",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NDISIb=SpectralIndex(
            short_name="NDISIb",
            long_name="Normalized Difference Impervious Surface Index Blue",
            formula="(T - (B + N + S1) / 3.0)/(T + (B + N + S1) / 3.0)",
            reference="https://doi.org/10.14358/PERS.76.5.557",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NDISIndwi=SpectralIndex(
            short_name="NDISIndwi",
            long_name="Normalized Difference Impervious Surface Index with NDWI",
            formula="(T - (((G - N)/(G + N)) + N + S1) / 3.0)/(T + (((G - N)/(G + N)) + N + S1) / 3.0)",
            reference="https://doi.org/10.14358/PERS.76.5.557",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NDISImndwi=SpectralIndex(
            short_name="NDISImndwi",
            long_name="Normalized Difference Impervious Surface Index with MNDWI",
            formula="(T - (((G - S1)/(G + S1)) + N + S1) / 3.0)/(T + (((G - S1)/(G + S1)) + N + S1) / 3.0)",
            reference="https://doi.org/10.14358/PERS.76.5.557",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NSDS=SpectralIndex(
            short_name="NSDS",
            long_name="Normalized Shortwave Infrared Difference Soil-Moisture",
            formula="(S1 - S2)/(S1 + S2)",
            reference="https://doi.org/10.3390/land10030231",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        MBI=SpectralIndex(
            short_name="MBI",
            long_name="Modified Bare Soil Index",
            formula="((S1 - S2 - N)/(S1 + S2 + N)) + 0.5",
            reference="https://doi.org/10.3390/land10030231",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        EMBI=SpectralIndex(
            short_name="EMBI",
            long_name="Enhanced Modified Bare Soil Index",
            formula="((((S1 - S2 - N)/(S1 + S2 + N)) + 0.5) - ((G - S1)/(G + S1)) - 0.5)/((((S1 - S2 - N)/(S1 + S2 + N)) + 0.5) + ((G - S1)/(G + S1)) + 1.5)",
            reference="https://doi.org/10.1016/j.jag.2022.102703",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NDSoI=SpectralIndex(
            short_name="NDSoI",
            long_name="Normalized Difference Soil Index",
            formula="(S2 - G)/(S2 + G)",
            reference="https://doi.org/10.1016/j.jag.2015.02.010",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        BaI=SpectralIndex(
            short_name="BaI",
            long_name="Bareness Index",
            formula="R + S1 - N",
            reference="https://doi.org/10.1109/IGARSS.2005.1525743",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        NBLI=SpectralIndex(
            short_name="NBLI",
            long_name="Normalized Difference Bare Land Index",
            formula="(R - T)/(R + T)",
            reference="https://doi.org/10.3390/rs9030249",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        DBI=SpectralIndex(
            short_name="DBI",
            long_name="Dry Built-Up Index",
            formula="((B - T1)/(B + T1)) - ((N - R)/(N + R))",
            reference="https://doi.org/10.3390/land7030081",
            application_domain="urban",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        DBSI=SpectralIndex(
            short_name="DBSI",
            long_name="Dry Bareness Index",
            formula="((S1 - G)/(S1 + G)) - ((N - R)/(N + R))",
            reference="https://doi.org/10.3390/land7030081",
            application_domain="soil",
            date_of_addition="2022-04-18",
            contributor="https://github.com/davemlz",
        ),
        CSI=SpectralIndex(
            short_name="CSI",
            long_name="Char Soil Index",
            formula="N/S2",
            reference="https://doi.org/10.1016/j.rse.2005.04.014",
            application_domain="burn",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VI6T=SpectralIndex(
            short_name="VI6T",
            long_name="VI6T Index",
            formula="(N - T/10000.0)/(N + T/10000.0)",
            reference="https://doi.org/10.1080/01431160500239008",
            application_domain="burn",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        NBRT2=SpectralIndex(
            short_name="NBRT2",
            long_name="Normalized Burn Ratio Thermal 2",
            formula="((N / (T / 10000.0)) - S2) / ((N / (T / 10000.0)) + S2)",
            reference="https://doi.org/10.1080/01431160500239008",
            application_domain="burn",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        NBRT3=SpectralIndex(
            short_name="NBRT3",
            long_name="Normalized Burn Ratio Thermal 3",
            formula="((N - (T / 10000.0)) - S2) / ((N - (T / 10000.0)) + S2)",
            reference="https://doi.org/10.1080/01431160500239008",
            application_domain="burn",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        MIRBI=SpectralIndex(
            short_name="MIRBI",
            long_name="Mid-Infrared Burn Index",
            formula="10.0 * S2 - 9.8 * S1 + 2.0",
            reference="https://doi.org/10.1080/01431160110053185",
            application_domain="burn",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        DPDD=SpectralIndex(
            short_name="DPDD",
            long_name="Dual-Pol Diagonal Distance",
            formula="(VV + VH)/2.0 ** 0.5",
            reference="https://doi.org/10.1016/j.rse.2018.09.003",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VDDPI=SpectralIndex(
            short_name="VDDPI",
            long_name="Vertical Dual De-Polarization Index",
            formula="(VV + VH)/VV",
            reference="https://doi.org/10.1016/j.rse.2018.09.003",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        NDPolI=SpectralIndex(
            short_name="NDPolI",
            long_name="Normalized Difference Polarization Index",
            formula="(VV - VH)/(VV + VH)",
            reference="https://www.isprs.org/proceedings/XXXVII/congress/4_pdf/267.pdf",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VHVVR=SpectralIndex(
            short_name="VHVVR",
            long_name="VH-VV Ratio",
            formula="VH/VV",
            reference="https://doi.org/10.1109/IGARSS47720.2021.9554099",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VHVVP=SpectralIndex(
            short_name="VHVVP",
            long_name="VH-VV Product",
            formula="VH * VV",
            reference="https://doi.org/10.1109/IGARSS47720.2021.9554099",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VVVHD=SpectralIndex(
            short_name="VVVHD",
            long_name="VV-VH Difference",
            formula="VV - VH",
            reference="https://doi.org/10.1109/IGARSS47720.2021.9554099",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VVVHS=SpectralIndex(
            short_name="VVVHS",
            long_name="VV-VH Sum",
            formula="VV + VH",
            reference="https://doi.org/10.1109/IGARSS47720.2021.9554099",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VVVHR=SpectralIndex(
            short_name="VVVHR",
            long_name="VV-VH Ratio",
            formula="VV/VH",
            reference="https://doi.org/10.3390/app9040655",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        VHVVD=SpectralIndex(
            short_name="VHVVD",
            long_name="VH-VV Difference",
            formula="VH - VV",
            reference="https://doi.org/10.3390/app9040655",
            application_domain="radar",
            date_of_addition="2022-04-19",
            contributor="https://github.com/davemlz",
        ),
        BAIM=SpectralIndex(
            short_name="BAIM",
            long_name="Burned Area Index adapted to MODIS",
            formula="1.0/((0.05 - N) ** 2.0) + ((0.2 - S2) ** 2.0)",
            reference="https://doi.org/10.1016/j.foreco.2006.08.248",
            application_domain="burn",
            date_of_addition="2022-04-20",
            contributor="https://github.com/davemlz",
        ),
        SWM=SpectralIndex(
            short_name="SWM",
            long_name="Sentinel Water Mask",
            formula="(B + G)/(N + S1)",
            reference="https://eoscience.esa.int/landtraining2017/files/posters/MILCZAREK.pdf",
            application_domain="water",
            date_of_addition="2022-04-20",
            contributor="https://github.com/davemlz",
        ),
        LSWI=SpectralIndex(
            short_name="LSWI",
            long_name="Land Surface Water Index",
            formula="(N - S1)/(N + S1)",
            reference="https://doi.org/10.1016/j.rse.2003.11.008",
            application_domain="water",
            date_of_addition="2022-04-20",
            contributor="https://github.com/davemlz",
        ),
        MLSWI26=SpectralIndex(
            short_name="MLSWI26",
            long_name="Modified Land Surface Water Index (MODIS Bands 2 and 6)",
            formula="(1.0 - N - S1)/(1.0 - N + S1)",
            reference="https://doi.org/10.3390/rs71215805",
            application_domain="water",
            date_of_addition="2022-04-20",
            contributor="https://github.com/davemlz",
        ),
        MLSWI27=SpectralIndex(
            short_name="MLSWI27",
            long_name="Modified Land Surface Water Index (MODIS Bands 2 and 7)",
            formula="(1.0 - N - S2)/(1.0 - N + S2)",
            reference="https://doi.org/10.3390/rs71215805",
            application_domain="water",
            date_of_addition="2022-04-20",
            contributor="https://github.com/davemlz",
        ),
        NBRplus=SpectralIndex(
            short_name="NBRplus",
            long_name="Normalized Burn Ratio Plus",
            formula="(S2 - N2 - G - B)/(S2 + N2 + G + B)",
            reference="https://doi.org/10.3390/rs14071727",
            application_domain="burn",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        NBRSWIR=SpectralIndex(
            short_name="NBRSWIR",
            long_name="Normalized Burn Ratio SWIR",
            formula="(S2 - S1 - 0.02)/(S2 + S1 + 0.1)",
            reference="https://doi.org/10.1080/22797254.2020.1738900",
            application_domain="burn",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        NDSWIR=SpectralIndex(
            short_name="NDSWIR",
            long_name="Normalized Difference SWIR",
            formula="(N - S1)/(N + S1)",
            reference="https://doi.org/10.1109/TGRS.2003.819190",
            application_domain="burn",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        SEVI=SpectralIndex(
            short_name="SEVI",
            long_name="Shadow-Eliminated Vegetation Index",
            formula="(N/R) + fdelta * (1.0/R)",
            reference="https://doi.org/10.1080/17538947.2018.1495770",
            application_domain="vegetation",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        ANDWI=SpectralIndex(
            short_name="ANDWI",
            long_name="Augmented Normalized Difference Water Index",
            formula="(B + G + R - N - S1 - S2)/(B + G + R + N + S1 + S2)",
            reference="https://doi.org/10.1016/j.envsoft.2021.105030",
            application_domain="water",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        NBAI=SpectralIndex(
            short_name="NBAI",
            long_name="Normalized Built-up Area Index",
            formula="(S2 - S1/G)/(S2 + S1/G)",
            reference="https://www.omicsonline.org/scientific-reports/JGRS-SR136.pdf",
            application_domain="urban",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        BRBA=SpectralIndex(
            short_name="BRBA",
            long_name="Band Ratio for Built-up Area",
            formula="R/S1",
            reference="https://www.omicsonline.org/scientific-reports/JGRS-SR136.pdf",
            application_domain="urban",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        VIBI=SpectralIndex(
            short_name="VIBI",
            long_name="Vegetation Index Built-up Index",
            formula="((N-R)/(N+R))/(((N-R)/(N+R)) + ((S1-N)/(S1+N)))",
            reference="http://dx.doi.org/10.1080/01431161.2012.687842",
            application_domain="urban",
            date_of_addition="2022-09-22",
            contributor="https://github.com/davemlz",
        ),
        NSDSI1=SpectralIndex(
            short_name="NSDSI1",
            long_name="Normalized Shortwave-Infrared Difference Bare Soil Moisture Index 1",
            formula="(S1-S2)/S1",
            reference="https://doi.org/10.1016/j.isprsjprs.2019.06.012",
            application_domain="soil",
            date_of_addition="2022-10-03",
            contributor="https://github.com/CvenGeo",
        ),
        NSDSI2=SpectralIndex(
            short_name="NSDSI2",
            long_name="Normalized Shortwave-Infrared Difference Bare Soil Moisture Index 2",
            formula="(S1-S2)/S2",
            reference="https://doi.org/10.1016/j.isprsjprs.2019.06.012",
            application_domain="soil",
            date_of_addition="2022-10-03",
            contributor="https://github.com/CvenGeo",
        ),
        NSDSI3=SpectralIndex(
            short_name="NSDSI3",
            long_name="Normalized Shortwave-Infrared Difference Bare Soil Moisture Index 3",
            formula="(S1-S2)/(S1+S2)",
            reference="https://doi.org/10.1016/j.isprsjprs.2019.06.012",
            application_domain="soil",
            date_of_addition="2022-10-03",
            contributor="https://github.com/CvenGeo",
        ),
        NDTI=SpectralIndex(
            short_name="NDTI",
            long_name="Normalized Difference Turbidity Index",
            formula="(R-G)/(R+G)",
            reference="https://doi.org/10.1016/j.rse.2006.07.012",
            application_domain="water",
            date_of_addition="2022-10-03",
            contributor="https://github.com/CvenGeo",
        ),
        NDPonI=SpectralIndex(
            short_name="NDPonI",
            long_name="Normalized Difference Pond Index",
            formula="(S1-G)/(S1+G)",
            reference="https://doi.org/10.1016/j.rse.2006.07.012",
            application_domain="water",
            date_of_addition="2022-10-03",
            contributor="https://github.com/CvenGeo",
        ),
        NSTv1=SpectralIndex(
            short_name="NSTv1",
            long_name="NIR-SWIR-Temperature Version 1",
            formula="((N-S2)/(N+S2))*T",
            reference="https://doi.org/10.1016/j.rse.2011.06.010",
            application_domain="burn",
            date_of_addition="2022-10-06",
            contributor="https://github.com/davemlz",
        ),
        NSTv2=SpectralIndex(
            short_name="NSTv2",
            long_name="NIR-SWIR-Temperature Version 2",
            formula="(N-(S2+T))/(N+(S2+T))",
            reference="https://doi.org/10.1016/j.rse.2011.06.010",
            application_domain="burn",
            date_of_addition="2022-10-06",
            contributor="https://github.com/davemlz",
        ),
        NDCI=SpectralIndex(
            short_name="NDCI",
            long_name="Normalized Difference Chlorophyll Index",
            formula="(RE1 - R)/(RE1 + R)",
            reference="https://doi.org/10.1016/j.rse.2011.10.016",
            application_domain="water",
            date_of_addition="2022-10-10",
            contributor="https://github.com/kalab-oto",
        ),
        WI2015=SpectralIndex(
            short_name="WI2015",
            long_name="Water Index 2015",
            formula="1.7204 + 171 * G + 3 * R - 70 * N - 45 * S1 - 71 * S2",
            reference="https://doi.org/10.1016/j.rse.2015.12.055",
            application_domain="water",
            date_of_addition="2022-10-26",
            contributor="https://github.com/remi-braun",
        ),
        DSWI5=SpectralIndex(
            short_name="DSWI5",
            long_name="Disease-Water Stress Index 5",
            formula="(N + G)/(S1 + R)",
            reference="https://doi.org/10.1080/01431160310001618031",
            application_domain="vegetation",
            date_of_addition="2022-10-26",
            contributor="https://github.com/remi-braun",
        ),
        DSWI1=SpectralIndex(
            short_name="DSWI1",
            long_name="Disease-Water Stress Index 1",
            formula="N/S1",
            reference="https://doi.org/10.1080/01431160310001618031",
            application_domain="vegetation",
            date_of_addition="2022-10-29",
            contributor="https://github.com/davemlz",
        ),
        DSWI2=SpectralIndex(
            short_name="DSWI2",
            long_name="Disease-Water Stress Index 2",
            formula="S1/G",
            reference="https://doi.org/10.1080/01431160310001618031",
            application_domain="vegetation",
            date_of_addition="2022-10-29",
            contributor="https://github.com/davemlz",
        ),
        DSWI3=SpectralIndex(
            short_name="DSWI3",
            long_name="Disease-Water Stress Index 3",
            formula="S1/R",
            reference="https://doi.org/10.1080/01431160310001618031",
            application_domain="vegetation",
            date_of_addition="2022-10-29",
            contributor="https://github.com/davemlz",
        ),
        DSWI4=SpectralIndex(
            short_name="DSWI4",
            long_name="Disease-Water Stress Index 4",
            formula="G/R",
            reference="https://doi.org/10.1080/01431160310001618031",
            application_domain="vegetation",
            date_of_addition="2022-10-29",
            contributor="https://github.com/davemlz",
        ),
        DSI=SpectralIndex(
            short_name="DSI",
            long_name="Drought Stress Index",
            formula="S1/N",
            reference="https://www.asprs.org/wp-content/uploads/pers/1999journal/apr/1999_apr_495-501.pdf",
            application_domain="vegetation",
            date_of_addition="2022-10-26",
            contributor="https://github.com/remi-braun",
        ),
        BITM=SpectralIndex(
            short_name="BITM",
            long_name="Landsat TM-based Brightness Index",
            formula="(((B**2.0)+(G**2.0)+(R**2.0))/3.0)**0.5",
            reference="https://doi.org/10.1016/S0034-4257(98)00030-3",
            application_domain="soil",
            date_of_addition="2022-11-20",
            contributor="https://github.com/davemlz",
        ),
        BIXS=SpectralIndex(
            short_name="BIXS",
            long_name="SPOT HRV XS-based Brightness Index",
            formula="(((G**2.0)+(R**2.0))/2.0)**0.5",
            reference="https://doi.org/10.1016/S0034-4257(98)00030-3",
            application_domain="soil",
            date_of_addition="2022-11-20",
            contributor="https://github.com/remi-braun",
        ),
        RI4XS=SpectralIndex(
            short_name="RI4XS",
            long_name="SPOT HRV XS-based Redness Index 4",
            formula="(R**2.0)/(G**4.0)",
            reference="https://doi.org/10.1016/S0034-4257(98)00030-3",
            application_domain="soil",
            date_of_addition="2022-11-20",
            contributor="https://github.com/davemlz",
        ),
        NDSIWV=SpectralIndex(
            short_name="NDSIWV",
            long_name="WorldView Normalized Difference Soil Index",
            formula="(G - Y)/(G + Y)",
            reference="https://www.semanticscholar.org/paper/Using-WorldView-2-Vis-NIR-MSI-Imagery-to-Support-Wolf/5e5063ccc4ee76b56b721c866e871d47a77f9fb4",
            application_domain="soil",
            date_of_addition="2022-11-20",
            contributor="https://github.com/remi-braun",
        ),
        TWI=SpectralIndex(
            short_name="TWI",
            long_name="Triangle Water Index",
            formula="(2.84 * (RE1 - RE2) / (G + S2)) + ((1.25 * (G - B) - (N - B)) / (N + 1.25 * G - 0.25 * B))",
            reference="https://doi.org/10.3390/rs14215289",
            application_domain="water",
            date_of_addition="2023-02-10",
            contributor="https://github.com/remi-braun",
        ),
        CCI=SpectralIndex(
            short_name="CCI",
            long_name="Chlorophyll Carotenoid Index",
            formula="(G1 - R)/(G1 + R)",
            reference="https://doi.org/10.1073/pnas.1606162113",
            application_domain="vegetation",
            date_of_addition="2023-03-12",
            contributor="https://github.com/joanvlasschaert",
        ),
        NBLIOLI=SpectralIndex(
            short_name="NBLIOLI",
            long_name="Normalized Difference Bare Land Index for Landsat-OLI",
            formula="(R - T1)/(R + T1)",
            reference="https://doi.org/10.3390/rs9030249",
            application_domain="soil",
            date_of_addition="2023-03-12",
            contributor="https://github.com/davemlz",
        ),
        SLAVI=SpectralIndex(
            short_name="SLAVI",
            long_name="Specific Leaf Area Vegetation Index",
            formula="N/(R + S2)",
            reference="https://www.asprs.org/wp-content/uploads/pers/2000journal/february/2000_feb_183-191.pdf",
            application_domain="vegetation",
            date_of_addition="2023-07-03",
            contributor="https://github.com/geoSanjeeb",
        ),
        EBI=SpectralIndex(
            short_name="EBI",
            long_name="Enhanced Bloom Index",
            formula="(R + G + B)/((G/B) * (R - B + epsilon))",
            reference="https://doi.org/10.1016/j.isprsjprs.2019.08.006",
            application_domain="vegetation",
            date_of_addition="2023-07-03",
            contributor="https://github.com/geoSanjeeb",
        ),
        ENDVI=SpectralIndex(
            short_name="ENDVI",
            long_name="Enhanced Normalized Difference Vegetation Index",
            formula="((N + G) - (2 * B)) / ((N + G) + (2 * B))",
            reference="https://doi.org/10.1371/journal.pone.0186193",
            application_domain="vegetation",
            date_of_addition="2024-04-08",
            contributor="https://github.com/gagev",
        ),
        bNIRv=SpectralIndex(
            short_name="bNIRv",
            long_name="Blue Near-Infrared Reflectance of Vegetation",
            formula="((N - B)/(N + B)) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        EVIv=SpectralIndex(
            short_name="EVIv",
            long_name="Enhanced Vegetation Index of Vegetation",
            formula="2.5 * ((N - R)/(N + 6 * R - 7.5 * B + 1.0)) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        sNIRvLSWI=SpectralIndex(
            short_name="sNIRvLSWI",
            long_name="SWIR-enhanced Near-Infrared Reflectance of Vegetation for LSWI",
            formula="((N - S2)/(N + S2)) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        sNIRvNDPI=SpectralIndex(
            short_name="sNIRvNDPI",
            long_name="SWIR-enhanced Near-Infrared Reflectance of Vegetation for NDPI",
            formula="(N - (alpha * R + (1.0 - alpha) * S2))/(N + (alpha * R + (1.0 - alpha) * S2)) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        sNIRvSWIR=SpectralIndex(
            short_name="sNIRvSWIR",
            long_name="SWIR-enhanced Near-Infrared Reflectance of Vegetation",
            formula="((N - R - S2 ** 2.0)/(N + R + S2 ** 2.0)) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-14",
            contributor="https://github.com/MartinuzziFrancesco",
        ),
        sNIRvNDVILSWIP=SpectralIndex(
            short_name="sNIRvNDVILSWIP",
            long_name="SWIR-enhanced Near-Infrared Reflectance of Vegetation for the NDVI-LSWI Product",
            formula="((N - R)/(N + R)) * ((N - S2)/(N + S2)) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        sNIRvNDVILSWIS=SpectralIndex(
            short_name="sNIRvNDVILSWIS",
            long_name="SWIR-enhanced Near-Infrared Reflectance of Vegetation for the NDVI-LSWI Sum",
            formula="(((N - R)/(N + R)) + ((N - S2)/(N + S2))) * N",
            reference="https://doi.org/10.1029/2024JG008240",
            application_domain="vegetation",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        OSI=SpectralIndex(
            short_name="OSI",
            long_name="Oil Spill Index",
            formula="(G + R)/B",
            reference="https://doi.org/10.1016/j.mex.2021.101327",
            application_domain="water",
            date_of_addition="2024-05-03",
            contributor="https://github.com/emanuelcastanho",
        ),
        PI=SpectralIndex(
            short_name="PI",
            long_name="Plastic Index",
            formula="N/(N + R)",
            reference="https://doi.org/10.3390/rs12162648",
            application_domain="water",
            date_of_addition="2024-05-03",
            contributor="https://github.com/emanuelcastanho",
        ),
        FAI=SpectralIndex(
            short_name="FAI",
            long_name="Floating Algae Index",
            formula="N - (R + (S1 - R)*((lambdaN - lambdaR)/(lambdaS1 - lambdaR)))",
            reference="https://doi.org/10.1016/j.rse.2009.05.012",
            application_domain="water",
            date_of_addition="2024-05-03",
            contributor="https://github.com/emanuelcastanho",
        ),
        RNDVI=SpectralIndex(
            short_name="RNDVI",
            long_name="Reversed Normalized Difference Vegetation Index",
            formula="(R - N)/(R + N)",
            reference="https://doi.org/10.3390/rs12162648",
            application_domain="water",
            date_of_addition="2024-05-16",
            contributor="https://github.com/davemlz",
        ),
        CRI550=SpectralIndex(
            short_name="CRI550",
            long_name="Carotenoid Reflectance Index using 550 nm",
            formula="(1.0 / B) - (1.0 / G)",
            reference="https://doi.org/10.1562/0031-8655(2002)0750272ACCIPL2.0.CO2",
            application_domain="vegetation",
            date_of_addition="2024-08-08",
            contributor="https://github.com/eomasters-repos",
        ),
        CRI700=SpectralIndex(
            short_name="CRI700",
            long_name="Carotenoid Reflectance Index using 700 nm",
            formula="(1.0 / B) - (1.0 / RE1)",
            reference="https://doi.org/10.1562/0031-8655(2002)0750272ACCIPL2.0.CO2",
            application_domain="vegetation",
            date_of_addition="2024-08-08",
            contributor="https://github.com/eomasters-repos",
        ),
        NPCI=SpectralIndex(
            short_name="NPCI",
            long_name="Normalized Pigments Chlorophyll Ratio Index",
            formula="(R - A) / (R + A)",
            reference="https://doi.org/10.1016/0034-4257(94)90136-8",
            application_domain="vegetation",
            date_of_addition="2025-03-19",
            contributor="https://github.com/MartinuzziFrancesco",
        ),
        FWEI=SpectralIndex(
            short_name="FWEI",
            long_name="Flood/Water Extraction Index",
            formula="(((B + G + R) / 3.0) - N)/(((B + G + R) / 3.0) + N)",
            reference="https://doi.org/10.1007/s00477-024-02660-z",
            application_domain="water",
            date_of_addition="2025-04-15",
            contributor="https://github.com/kalab-oto",
        ),
        CRSWIR=SpectralIndex(
            short_name="CRSWIR",
            long_name="Continuum Removal SWIR",
            formula="S1 / (N2 + ((S2 - N2) / (lambdaS2 - lambdaN2)) * (lambdaS1 - lambdaN2))",
            reference="https://www.onf.fr/onf/+/cec::les-rendez-vous-techniques-de-lonf-no69-70.html",
            application_domain="vegetation",
            date_of_addition="2025-06-23",
            contributor="https://github.com/kenoz",
        ),
        MVI=SpectralIndex(
            short_name="MVI",
            long_name="Mangrove Vegetation Index",
            formula="(N - G) / (S1 - G)",
            reference="https://doi.org/10.1016/j.isprsjprs.2020.06.001",
            application_domain="vegetation",
            date_of_addition="2025-04-08",
            contributor="https://github.com/delatorredm",
        ),
        MI=SpectralIndex(
            short_name="MI",
            long_name="Mangrove Index",
            formula="(N - S1) / (N * S1)",
            reference="https://www.researchgate.net/profile/Gathot-Winarso/publication/277137915_NEW_MANGROVE_INDEX_AS_DEGRADATIONHEALTH_INDICATOR_USING_REMOTE_SENSING_DATA_SEGARA_ANAKAN_AND_ALAS_PURWO_CASE_STUDY/links/5562d90c08ae8c0cab333ab4/NEW-MANGROVE-INDEX-AS-DEGRADATION-HEALTH-INDICATOR-USING-REMOTE-SENSING-DATA-SEGARA-ANAKAN-AND-ALAS-PURWO-CASE-STUDY.pdf",
            application_domain="vegetation",
            date_of_addition="2025-07-11",
            contributor="https://github.com/davemlz",
        ),
        IRGBVI=SpectralIndex(
            short_name="IRGBVI",
            long_name="Improved-Red-Green-Blue Vegetation Index",
            formula="(5.0 * (G ** 2.0) - 2.0 * (R ** 2.0) - 5.0 * (B ** 2.0)) / (5.0 * (G ** 2.0) + 2.0 * (R ** 2.0) + 5.0 * (B ** 2.0))",
            reference="https://doi.org/10.1016/j.jag.2024.103668",
            application_domain="vegetation",
            date_of_addition="2025-07-11",
            contributor="https://github.com/davemlz",
        ),
        FDI=SpectralIndex(
            short_name="FDI",
            long_name="Floating Debris Index",
            formula="N - (RE2 + 10 * (S1 - RE2) * (lambdaN - lambdaR)/(lambdaS1 - lambdaR))",
            reference="https://doi.org/10.1038/s41598-020-62298-z",
            application_domain="water",
            date_of_addition="2025-07-18",
            contributor="https://github.com/guillemc23",
        ),
        NDVI4RE=SpectralIndex(
            short_name="NDVI4RE",
            long_name="4-band Red Edge Normalized Difference Vegetation Index",
            formula="((alpha * RE3 + (1 - alpha) * RE2) - (beta * R + (1 - beta) * RE1))/((alpha * RE3 + (1 - alpha) * RE2) + (beta * R + (1 - beta) * RE1))",
            reference="https://doi.org/10.1016/j.jag.2022.102793",
            application_domain="vegetation",
            date_of_addition="2025-09-30",
            contributor="https://github.com/davemlz",
        ),
        SAVI4RE=SpectralIndex(
            short_name="SAVI4RE",
            long_name="4-band Red Edge Soil Adjusted Vegetation Index",
            formula="2.0 * ((alpha * RE3 + (1 - alpha) * RE2) - (beta * R + (1 - beta) * RE1))/((alpha * RE3 + (1 - alpha) * RE2) + (beta * R + (1 - beta) * RE1 + 1))",
            reference="https://doi.org/10.1016/j.jag.2022.102793",
            application_domain="vegetation",
            date_of_addition="2025-09-30",
            contributor="https://github.com/davemlz",
        ),
        RVI4RE=SpectralIndex(
            short_name="RVI4RE",
            long_name="4-band Red Edge Ratio Vegetation Index",
            formula="(alpha * RE3 + (1 - alpha) * RE2)/(beta * R + (1 - beta) * RE1)",
            reference="https://doi.org/10.1016/j.jag.2022.102793",
            application_domain="vegetation",
            date_of_addition="2025-09-30",
            contributor="https://github.com/davemlz",
        ),
        NDTI4RE=SpectralIndex(
            short_name="NDTI4RE",
            long_name="4-band Red Edge Normalized Difference Tillage Index",
            formula="gamma * (S1 - S2)/(S1 + S2) + (1 - gamma) * (N - RE3)/(N + RE3)",
            reference="https://doi.org/10.1016/j.jag.2022.102793",
            application_domain="vegetation",
            date_of_addition="2025-09-30",
            contributor="https://github.com/davemlz",
        ),
        SNDTI4RE=SpectralIndex(
            short_name="SNDTI4RE",
            long_name="4-band Red Edge Soil-Adjusted Normalized Difference Tillage Index",
            formula="gamma * ((S1 - S2) * 2.0)/(S1 + S2 + 1.0) + (1 - gamma) * ((N - RE3) * 2.0)/(N + RE3 + 1.0)",
            reference="https://doi.org/10.1016/j.jag.2022.102793",
            application_domain="vegetation",
            date_of_addition="2025-09-30",
            contributor="https://github.com/davemlz",
        ),
        STI4RE=SpectralIndex(
            short_name="STI4RE",
            long_name="4-band Red Edge Soil Tillage Index",
            formula="gamma * S1/S2 + (1 - gamma) * N/RE3",
            reference="https://doi.org/10.1016/j.jag.2022.102793",
            application_domain="vegetation",
            date_of_addition="2025-09-30",
            contributor="https://github.com/davemlz",
        ),
        STI=SpectralIndex(
            short_name="STI",
            long_name="Simple Tillage Index",
            formula="S1 / S2",
            reference="https://www.asprs.org/wp-content/uploads/pers/1997journal/jan/1997_jan_87-93.pdf",
            application_domain="vegetation",
            date_of_addition="2025-10-11",
            contributor="https://github.com/davemlz",
        ),
        NDTillI=SpectralIndex(
            short_name="NDTillI",
            long_name="Normalized Difference Tillage Index",
            formula="(S1 - S2)/(S1 + S2)",
            reference="https://www.asprs.org/wp-content/uploads/pers/1997journal/jan/1997_jan_87-93.pdf",
            application_domain="vegetation",
            date_of_addition="2025-10-11",
            contributor="https://github.com/davemlz",
        ),
        SNDTI=SpectralIndex(
            short_name="SNDTI",
            long_name="Soil-Adjusted Normalized Difference Tillage Index",
            formula="(1.0 + L) * (S1 - S2) / (S1 + S2 + L)",
            reference="https://doi.org/10.1080/22797254.2017.1418186",
            application_domain="vegetation",
            date_of_addition="2025-10-11",
            contributor="https://github.com/davemlz",
        ),
    )
)
